package uva.sc.ql.ast;
import uva.sc.ql.atom.BooleanAtom;
import uva.sc.ql.atom.ID;
import uva.sc.ql.atom.NumberAtom;
import uva.sc.ql.atom.StringAtom;
import uva.sc.ql.expression.binaryExpressions.Addition;
import uva.sc.ql.expression.binaryExpressions.And;
import uva.sc.ql.expression.binaryExpressions.Division;
import uva.sc.ql.expression.binaryExpressions.Equals;
import uva.sc.ql.expression.binaryExpressions.GreaterThan;
import uva.sc.ql.expression.binaryExpressions.GreaterThanEquals;
import uva.sc.ql.expression.binaryExpressions.LesserThan;
import uva.sc.ql.expression.binaryExpressions.LesserThanEquals;
import uva.sc.ql.expression.binaryExpressions.Modulus;
import uva.sc.ql.expression.binaryExpressions.Multiplication;
import uva.sc.ql.expression.binaryExpressions.NotEquals;
import uva.sc.ql.expression.binaryExpressions.Or;
import uva.sc.ql.expression.binaryExpressions.Substraction;
import uva.sc.ql.expression.unaryExpressions.Minus;
import uva.sc.ql.expression.unaryExpressions.Not;
public interface IQLExpressionNodeVisitor<T> {
public T visit(ID id);
public T visit(Addition addition);
public T visit(And and);
public T visit(Division division);
public T visit(Equals equals);
public T visit(GreaterThan greaterThan);
public T visit(GreaterThanEquals greaterThanEquals);
public T visit(LesserThan lesserThan);
public T visit(LesserThanEquals lesserThanEquals);
public T visit(Modulus mod);
public T visit(Multiplication mult);
public T visit(NotEquals notEquals);
public T visit(Or or);
public T visit(Substraction sub);
public T visit(Minus minus);
public T visit(Not not);
public T visit(BooleanAtom bool);
public T visit(NumberAtom doub);
public T visit(StringAtom str);
}